3. 중첩 조건문을 보호 구문으로 바꾸기

  • 조건문 안의 조건문을 중첩으로 사용하기 보다 보호구문을 활용하면 코드를 읽는 사람이 로직을 이해하는데 편해진다.
  • 저자의 Tip

    • 참인 경로, 거짓인 경로 모두 정상 동작일 경우, if...else 절 활용
    • 한쪽만 정상, 다른 한쪽은 비정상인 경우 비정상인 경우를 return하여 함수를 빠져나온다. (=== 보호 구문 )

절차


  1. 교체해야 할 조건 중 가장 바깥 것을 선택하여 보호 구문으로 바꾼다.
  2. 테스트
  3. 1~2반복
  4. 모든 보호 구문이 같은 결과를 반환한다면 보호 구문들의 조건식을 통합(10.2)한다.

예시 코드

😞 Before

function getPayAmount() {
  let result
  if (isDead) {
    result = deadAmount()
  } else {
    if (isSeparated) {
      result = separatedAmount()
    } else {
      if (isRetired) {
        result = retiredAmount()
      } else {
        result = normalAmount()
      }
    }
  }
  return result
}

😃 After

function getPayAmount() {
  if (isDead) {
    return deadAmount()
  }
  if (isSeparated) {
    return separatedAmount()
  }
  if (isRetired) {
    return retiredAmount()
  }

  return normalAmount()
}

💡 Tip

기존에 참으로 중첩되던 if문을 역조건으로 조건식을 만들어서 리팩터링 할 수도 있다.

😞 Before

if (isAdult) {
  if (isMatch) {
    return certificate()
  }
}

😃 After

if (isUnderAge) return
if (isMatch) return

return certificate()
  • 논의 사항
    • !(a > 0 && b > 0 && c > 0), a <= 0 || b <=0 || c <=0

results matching ""

    No results matching ""